// express框架
const express = require('express')
// 处理请求信息
const bodyParser = require('body-parser')
// 连接数据库模块
const mongoose = require('mongoose')
// 静态资源访问
const path = require('path')

// 引入路由
const admin = require('./routes/admin')
const common = require('./routes/common')
const others = require('./routes/others')

// 创建服务器
const app = express();

// 处理跨域(打上标记，这样写有问题，老子在这里卡了一天)
// app.all("*",function(req,res,next){
//     //设置允许跨域的域名，*代表允许任意域名跨域
//     res.header("Access-Control-Allow-Origin","*");
//     //允许的header类型
//     res.header("Access-Control-Allow-Headers","content-type");
//     //跨域允许的请求方式 
//     res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
//     //类型
//     res.header("Content-Type", "application/json;charset=utf-8");
//     //经检测问题就是出在这里
//     if (req.method.toLowerCase() == 'options'){
//         res.status(200); //让options尝试请求快速结束
//     }
//     else{
//         next();
//     }
// })

app.all('*', function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*')
    res.header('Access-Control-Allow-Headers', '*')
    res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
    res.header('X-Powered-By', ' 3.2.1')
    // 图片上传的话.这个得去掉
    // res.header('Content-Type', 'application/json;charset=utf-8')
    next()
})

// 使用body-parse中间件
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false}))

// 静态资源访问(按理说前面的/upload可以不加,但是会报错,就像最后的那个-------最后一个有用但是在访问的时候得把upload去掉这个express中文网原话(Express 在静态目录查找文件，因此，存放静态文件的目录名不会出现在 URL 中)
// app.use('/upload',express.static('upload'))
app.use('/upload',express.static(path.join(__dirname,'upload')))
// app.use(express.static(path.join(__dirname,'upload')))

// 连接数据库
const db = require('./config/config').mongoURL
mongoose.connect(db,{useNewUrlParser: true,useUnifiedTopology: true})
.then(() => console.log('数据库连接成功'))
.catch(() => console.log('数据库连接失败'));

// 测试
// app.get('/',(req,res)=>{
//     res.send('Hello QUAN')
// })

// 使用路由
app.use('/admin',admin)
app.use('/common',common)
app.use('/',others)

// 监听端口
app.listen(7777,()=>{
    console.log(`服务器启动成功，请打开localhost:7777`)
})